 var mongoose=require("mongoose"),
    db=require("../config/db")
var Schema=mongoose.Schema;
//需要和数据库的字段对应
var SchemaUser=new Schema({
    //如果这里不设置对应的字段，则无法添加新的数据
    //有一个id字段 _id: ObjectId("6368d7ccf65b2ebaf8f47867")
    name:{type:String},                         //用户名
    psw:{type:String},                          //密码
    email:{type:String},                        //邮箱
    sex:{type:String,default:'asexual'},        //性别 默认中
    birth:{type:Date},                          //生日
    phone:{type:Number},                        //电话
    explain:{type:String},                      //签名
    imgrul:{type:String,default:'/user/user.png'},    //头像链接 默认 
    time:{type:Date},                       //注册时间
}); 





//用户登入时先判断是否是管理员 普通用户无法删除等
var SchemaAdmin=new Schema({    
    userID:{ type: Schema.Types.ObjectId, ref: 'User' },
    email:{type:String},                        //邮箱唯一验证
    authority:{type:Number,},        //权限管理员权限1 非管理0
    time:{type:Date},                       //注册时间
});
//好友表
const FriendSchema=new Schema({
    //如果这里不设置对应的字段，则无法添加新的数据
    //有一个id字段 _id: ObjectId("6368d7ccf65b2ebaf8f47867")
    //使用User表中的id字段 
    userID:{ type: Schema.Types.ObjectId, ref: 'User' },  //用户名
    friendID:{type:Schema.Types.ObjectId,ref:'User'}, //好友id
    state:{type:String},                          //好友状态0是好友，1申请中，2申请中
    time:{type:Date},                       //生成时间
    lastTime:{type:Date}                    //最后一次聊天时间
})
//一对一数聊天数据表
const MessageSchema=new Schema({
    userID:{type:Schema.Types.ObjectId,ref:'User'},   //用户名
    friendID:{type:Schema.Types.ObjectId,ref:'User'}, //好友id
    message:{type:String},
    types:{type:String},                              //数据发送类型0,1,2,3分别对应
    time:{type:Date},                                 //发送时间
    state:{type:Number}                               //0已读 1未读
}) 
//机器人聊天数据
const RobotMessageSchema=new Schema({
    userID:{type:Schema.Types.ObjectId,ref:'User'},   //用户名
    isRobot:{type:Boolean},                              //true 是人机消息 false 不是人机消息
    message:{type:String},
    types:{type:String,default:'0'},                              //机器人返回字符串
    time:{type:Date},                                 //发送时间
    state:{type:Number,default:'1'}                               //0已读 1未读
})  
//群表
const GroupSchema=new Schema({
    userID:{type:Schema.Types.ObjectId,ref:'User'},     //用户名
    name:{type:String},                                 //群名
    imgrul:{type:String,default:'group.png'},           //群头像 默认 
    time:{type:Date},                                   //创建时间
    notice:{type:String},                               //公告
})  

//群成员表
const GroupUserSchema=new Schema({
    goupID:{type:Schema.Types.ObjectId,ref:'GroupSchema'},     //用户名
    userID:{type:Schema.Types.ObjectId,ref:'User'},     //用户名
    name:{type:String},                                 //群内名称
    tip:{type:Number},                                  //未读消息 
    time:{type:Date},                                   //加入时间
    lastTime:{type:Date},
    shield:{type:Number},                               //是否屏蔽群消息
})  

//群消息表
const GroupMessageSchema=new Schema({
    groupID:{type:Schema.Types.ObjectId,ref:'GroupSchema'},     //用户名
    userID:{type:Schema.Types.ObjectId,ref:'User'},     //用户名
    message:{type:String},                              //内容
    types:{type:String},                              //数据发送类型0,1,2,3分别对应
    time:{type:Date},                                 //发送时间
}) 


//第一个参数是对应的是users表，第二个参数是数据映射表 第三个函数可以是表名
//db是链接数据库的实例，使用model后就会生成一个对应的表
const User=db.model('User',SchemaUser)
const Admin=db.model('Admin',SchemaAdmin)
const Friend=db.model('Friend',FriendSchema)
const Group=db.model('Group',GroupSchema)
const GroupUser=db.model('GroupUser',GroupUserSchema)
const Message=db.model('Message',MessageSchema)
const RobotMessage=db.model('RobotMessage',RobotMessageSchema)
const GroupMessage=db.model('GroupMessage',GroupMessageSchema)



// console.log(User);
//Schema生成一种结构，不可以直接对数据库进行操作，
//这种结构通过model方法生成的一个类就是等于数据库中的集合，可以直接对数据库进行操作
//User模型这个模型可以操作数据库
module.exports={User,Admin,Friend,Group,GroupUser,Message,GroupMessage,RobotMessage}
// console.log(module.exports);



//1链接数据库
//2使用mongoose.Schema建立一个映射表
//3使用mongoose.model建立对应数据表和映射表之间的联系的操作对象
//4得到对象后就是，这个对象可以使用一系列的数据库命令如find()查找等